'use strict';

class HW_MYJS {
    constructor(options) {
        if (!options || !options.id) {
            throw new Error('options is invalid');
        }

        this.options = {
            id: options.id
        };

        this.success = options.success || function(){};
        this.fail = options.fail || function(){};
        this._open();
    }

    _open() {
        this.myjsInstance = __native.MYJS.open(this.options.id);
        if (!this.myjsInstance) {
            this.fail();
            return;
        }
        this.success();
    }

    readValue() {
        if (!this.myjsInstance) {
            throw new Error('myjs not init');
        }

        return __native.MYJS.read(this.myjsInstance);
    };
	
	writeValue(val) {
        if (!this.myjsInstance) {
            throw new Error('myjs not init');
        }

        return __native.MYJS.write(this.myjsInstance, val);
    };

    close() {
        if (!this.myjsInstance) {
            throw new Error('myjs not init');
        }

        __native.MYJS.close(this.myjsInstance);
    };
}

function open(options) {
    return new HW_MYJS(options);
}

module.exports = {
    open,
}